<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 默认值的优先级都很低，只有传值不成功或者值为undefined时，才会生效
        let arr1 = [1,2,3, 'qqq'];
        let [a,b,c,d=true] = arr1; // 这里给d赋了一个默认值，默认值的优先级较低
        // 只有当一个数组成员严格等于undefined，默认值才会生效。null、false默认值不生效
        console.log(a,b,c,d);

        // ====== 惰性求值，即只有在用到的时候，才会求值 =======
        function getVal() {
            console.log(123);
            // 函数有返回值时调用函数会得到返回值；没有返回值时得到undefined
            return 1
        }
        let [aa, bb, cc=getVal()] = [1,2];
        console.log(aa, bb, cc);
        // ES6的数组深拷贝
        let a1 = [1,2,3,4];
        // ...是一个特殊运算符，展开运算符。会将对象或者数组展开成最基础的结构
        let a2 = [...a1]
    </script>
</body>
</html>